package com.bzkj.basicinfo.service.ncc;

import com.bzkj.basicinfo.domain.basic.BasicStoArea;
import com.bzkj.basicinfo.domain.ncc.StoArea;
import com.bzkj.common.core.domain.AjaxResult;

import java.util.HashMap;
import java.util.List;

/**
 * @author Admin
 * @description 库区服务接口，定义了库区的基本操作
 */
public interface StoAreaService {
    /**
     * 新增库区
     * @param stoArea 新增的库区对象
     * @return 新增的库区记录数
     */
    AjaxResult addStoArea(StoArea stoArea);

    /**
     * 更新剂型
     * @param stoArea 更新的剂型对象
     * @return 更新的剂型记录数
     */
    AjaxResult updateStoArea(StoArea stoArea);

    /**
     * 根据ID查询库区
     * @param stoAreaId 库区的唯一标识符
     * @return 查询到的库区对象
     */
    StoArea getStoAreaById(String stoAreaId);

    /**
     * 根据id查询库区
     * @param stoAreaIds
     * @return
     */
    List<StoArea> getStoAreaById(List<String> stoAreaIds);

    /**
     * 根据仓库ID查询库区
     * @param stoId 仓库的唯一标识符
     * @return 查询到的库区列表
     */
    List<BasicStoArea> getStoAreasByWarehouseId(String stoId);

    /**
     * 查询所有库区
     * @return 所有库区的列表
     */
    List<StoArea> getAllStoAreas(StoArea stoArea);

    /**
     * 删除剂型
     * @param id 剂型的唯一标识符
     * @return 删除的剂型记录数
     */
    int deleteFormulation(String id);

    /**
     * 检查库区是否有货位关联
     * @param stoAreaId 库区的唯一标识符
     * @return 如果存在关联返回 true，否则返回 false
     */
    boolean hasUnits(String stoAreaId); // 添加此方法

    AjaxResult getBasicStoStock();

    AjaxResult getAddStoUnitById(String sto_id);

    List<HashMap<String, Object>> queryStoAreaHouse(String sto_code,String sto_area_code);

    AjaxResult getAllAreaRules(String areaId);

    AjaxResult addAreaRules(StoArea stoArea);

    AjaxResult delAreaRules(String id);
}
